Simulação Computacional de Heteroestruturas Semicondutoras


Apresentação para defesa de dissertação de mestrado

Candidato: Thiago Luiz Chaves de Melo

Orientadora: Profa. Dra. Euzi Conceição Fernandes da Silva

Objetivos


Queremos calcular propriedades dinamicas em heteroestruturas semicondutoras

Cálculo de espectros de fotocorrente e absorção dependem de:

  • autovalores e autovetores (autofunções e autoenergias)

  • evolução temporal (solução da ESDT for EDP ou Oper. de Evolução)

Pacote de Onda Plana


Em nossos primeiros cálculos, pequenas variações:

  • tamanho do sistema $L$ ...................... efeitos de borda
  • número de pontos $N$ ......................... $\Delta x = L / N$
  • passo de tempo $\Delta t$ ........................... estabilidade

causavam grandes diferenças nos resultados (fotocorrente e absoção)

Pacote de Onda Plana


É um problema simples de EDP:

$$-\frac{\hbar^2}{2m_e} \frac{\partial^2 \psi(z,t)}{\partial z^2} = i \hbar \frac{\partial \psi(z,t)}{\partial t},$$

para:

$$\psi(z,0) = \frac{1}{ \sqrt[4]{ 2 \pi \sigma_{z}^2 }} \exp \left( i k_\mathrm{0} z - \frac{{\left( z - z_\mathrm{0} \right)}^2}{4 \sigma_{z}^2} \right).$$

Este problema possui algumas soluções analíticas, mas também pode ser tratado por Diferenças Finitas:

  • Runge-Kutta
  • Crank-Nicolson

Ou pelo operador de evolução temporal:

  • Split-Step FFT (Pseudo-Espectral)

Pacote de Onda Plana


Solução analítica 1 (FFT)

. \begin{equation} \Psi(z,t) = \displaystyle\int_{-\infty}^{+\infty} \left\{ \mathcal{F}[\Psi(z,0)] \, e^{- i \omega(k) t} \right\} \, e^{i kz} \, dk, \end{equation}

$$ E(k) = \hbar\omega(k)=\frac{\hbar^2 k^2}{2m} \rightarrow \omega(k)=\frac{\hbar k^2}{2m} $$

Solução analítica 2 (Propagador)

. $$ \Psi(z,t) = \displaystyle\int_{-\infty}^{+\infty} dx' \, J(x,t;x',0) \Psi(z',0) $$

$$ J(x,t;x',t') = \langle x | e^{-\frac{i \mathcal{H}\Delta t}{\hbar}} | x' \rangle $$

$$ H = -\frac{\hbar^2}{2m_e} \frac{\partial^2 \psi(z,t)}{\partial z^2} $$

Pacote de Onda Plana


Optamos pela solução analítica 1, com fácil implementação:

In [5]:
psi_k = fft(psi)
omega_k = k_au ** 2 / 2
psi = ifft(psi_k * np.exp(-1j * omega_k * t_au))

Pacote de Onda Plana


Evoluímos um pacote de onda de energia $E=150$ eV da posição inicial $z_\mathrm{i} = -20.0$ Å até a posição final $z_\mathrm{f} \approx +20.0$ Å utilizando os métodos:

  • Pseudo-Espectral
  • Runge-Kutta
  • Crank-Nicolson

Variamos para cada método:

  • $L=\{100, 250, 400, 550, 700, 850, 1000\}$ Å
  • $N=\{256, 512, 1024,2048, 4096\}$ pontos
  • $\Delta t = \{1 \times 10^{-20},\, 5 \times 10^{-20}, \dots,\, 1 \times 10^{-16},\, 5 \times 10^{-16} \}$ s

Observamos:

  • Conservação da norma
  • Desvio padrão
  • Surgimento de obliquidade (skewness)
  • Tempo de processamento

Pacote de Onda Plana


Sobre o desvio padrão e a obliquidade. stdvar_skewness

In [14]:
# L=100.0, N=1024, dt=1e-18
fig = evolui_pacote_de_onda(pd.read_pickle('saidas/onda_plana_parametro_bom.pkl'))
iplot(fig, filename='Evolucao bons parametros')
In [15]:
# L=850.0, N=256, dt=1e-16
fig = evolui_pacote_de_onda(pd.read_pickle('saidas/onda_plana_parametro_ruim.pkl'))
iplot(fig, filename='Evolucao mals parametros')

Pacote de Onda Plana


Para cada método e para cada combinação de $\{L,N,\Delta t\}$, calculamos:

\begin{align} \mathcal{A}(t) = \frac{\int_{-\infty}^{+\infty} |\psi(z,t)|^2 \, dz}{\int_{-\infty}^{+\infty} |\psi(z,0)|^2 \, dz} &\rightarrow \mathbb{A}(t) = \frac{\mathcal{A}(t)-\langle{\mathcal{A}(t)}\rangle}{\sigma(\mathcal{A}(t))}\\ \mathcal{S}(t) = \sigma\left(|\psi(z,t)|^2\right) &\rightarrow \mathbb{S}(t) = \frac{\mathcal{S}(t)-\langle{\mathcal{S}(t)}\rangle}{\sigma(\mathcal{S}(t))}\\ \mathcal{G}(t) = \gamma(t) &\rightarrow \mathbb{G}(t) = \frac{\mathcal{G}(t)-\langle{\mathcal{G}(t)}\rangle}{\sigma(\mathcal{G}(t))}\\ \end{align}

Consolidamos as 3 informações usando a Distância de Minkowski

\begin{equation}\label{eq:minkowski_vector} \mathbb{X}(t) = (\mathbb{A}(t),\mathbb{S}(t), \mathbb{G}(t)) \end{equation}

\begin{equation}\label{eq:minkowski_distance_specific} D_p (\mathbb{X}(t), \mathbb{Y}(t)) = \left( \displaystyle\sum_{i=1}^3 |\mathbb{X}_i(t)-\mathbb{Y}_i(t)|^p \right)^{1/p} \end{equation}

Onde $\mathbb{X}(t)$ se refere a evolução numérica e $\mathbb{Y}(t)$ a evolução analítica.

Pacote de Onda Plana


Utilizamos a métrica de Minkowski com $p=3$ para verificar que o método Pseudo-Espectral é substancialmente mais rápido e mais preciso para a maioria das combinações de parâmetros:

stdvar_skewness

In [7]:
py.iplot(fig, filename='jupyter-parametric_plot')
Out[7]: